.TH std::convertible_to 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::convertible_to \- std::convertible_to

.SH Synopsis
   Defined in header <concepts>
   template< class From, class To >

   concept convertible_to =
       std::is_convertible_v<From, To> &&          \fI(since C++20)\fP
       requires {
           static_cast<To>(std::declval<From>());

       };

   The concept convertible_to<From, To> specifies that an expression of the same type
   and value category as those of std::declval<From>() can be implicitly and explicitly
   converted to the type To, and the two forms of conversion produce equal results.

   Semantic requirements

   convertible_to<From, To> is modeled only if, given a function fun of type
   std::add_rvalue_reference_t<From>() such that the expression fun() is
   equality-preserving,

     * Either
          * To is neither an object type nor a reference-to-object type, or
          * static_cast<To>(fun()) is equal to []() -> To { return fun(); }(), and
     * One of the following is true:
          * std::add_rvalue_reference_t<From> is not a reference-to-object type, or
          * std::add_rvalue_reference_t<From> is an rvalue reference to a
            non-const-qualified type, and the resulting state of the object referenced
            by fun() is valid but unspecified after either expression above; or
          * the object referred to by fun() is not modified by either expression above.

   Equality preservation

   Expressions declared in requires expressions of the standard library concepts are
   required to be equality-preserving (except where stated otherwise).

.SH See also

   is_convertible
   is_nothrow_convertible checks if a type can be converted to the other type
   \fI(C++11)\fP                \fI(class template)\fP
   (C++20)
